package com.cysoft.starter.log.core.enums;

import com.cysoft.starter.log.core.jdbcsql.JdbcBase;
import com.cysoft.starter.log.core.jdbcsql.impl.Mysql;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;
import java.util.stream.Stream;

/**
 * @author 玖零
 * @version v0.0.1
 * @project cysoft-spring-boot-starter-log
 * @package com.cysoft.starter.log.core.enums
 * @date 2025-02-04 00:03
 * @desc 数据源适配
 */
@Getter
@AllArgsConstructor
public enum DataSourceEnum {

    /**
     * mysql数据库
     */
    MYSQL("mysql","mysql数据库", new Mysql()),

//    /**
//     * oracle数据库
//     */
//    ORACLE("oracle","oracle数据库"),
//
//    /**
//     * postgresql数据库
//     */
//    POSTGRESQL("postgresql","postgresql数据库"),
//
//    /**
//     * 达梦数据库
//     */
//    DM("dm","达梦数据库"),
//
//    /**
//     * sqlserver数据库
//     */
//    SQLSERVER("sqlserver","sqlserver数据库"),
//
//    /**
//     * 人大金仓数据库
//     */
//    KINGBASE("kingbase","人大金仓数据库")
    ;

    /**
     * 数据源编号
     */
    private final String code ;

    /**
     * 数据源描述
     */
    private final String desc;

    /**
     * 数据源配置
     */
    private final JdbcBase jdbcBase;

    /**
     * 根据code获取枚举
     * @param code
     * @return
     */
    public static DataSourceEnum getByCode(String code){
        Objects.requireNonNull(code);
        return Stream.of(values())
                .filter(bean  -> bean.code.equals(code))
                .findAny()
                .orElseThrow(() -> new IllegalArgumentException(code +"not exists"));
    }


}
